libxc: Make conversion from page count to bytes 32-bit safe
authorBoris Ostrovsky <boris.ostrovsky@oracle.com>
Thu, 26 Mar 2015 18:08:44 +0000 (14:08 -0400)
committerIan Campbell <ian.campbell@citrix.com>
Mon, 30 Mar 2015 08:34:46 +0000 (09:34 +0100)
Commit ba59e2ce935d ("libxc: allocate memory with vNUMA information for
PV guest") creates default vNUMA layout with a single range containing
all memory. The end of the range is calculated by shifting
dom->total_pages by 12 to the left.

On 32-bit dom0 this may result in losing upper bits since total_pages is
a 32-bit type.

Signed-off-by: Boris Ostrovsky <boris.ostrovsky@oracle.com>
Acked-by: Ian Campbell <ian.campbell@citrix.com>
tools/libxc/xc_dom_x86.c

index 3301f533658656664a5c5dff15a0d965fd9adcec..783f74994abd83f73af669a68a51eefe83cee8ac 100644 (file)
@@ -829,7 +829,7 @@ int arch_setup_meminit(struct xc_dom_image *dom)
             dom->nr_vmemranges = 1;
             dom->vmemranges = xc_dom_malloc(dom, sizeof(*dom->vmemranges));
             dom->vmemranges[0].start = 0;
-            dom->vmemranges[0].end   = dom->total_pages << PAGE_SHIFT;
+            dom->vmemranges[0].end   = (uint64_t)dom->total_pages << PAGE_SHIFT;
             dom->vmemranges[0].flags = 0;
             dom->vmemranges[0].nid   = 0;